package com.pm.buglist.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pm.buglist.domain.Bugs;
import com.pm.buglist.domain.Project;
import com.pm.common.core.domain.AjaxResult;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 项目信息表 服务类
 * </p>
 *
 * @author wwm
 * @since 2023-12-14
 */
public interface ProjectService extends IService<Project> {

    /**
     * 查询项目列表
     * */
    public List<Project> getProjectList(Project project);

    /**
     * 添加项目
     * */
    public AjaxResult insertProject(Project project);

    /**
     * 同步添加Oa项目数据
     * */
    public AjaxResult OaInsertProject(Project project);

    /**
     * 删除项目
     * */
    public AjaxResult delProject(Long id);

    /**
     * 根据id查询项目
     * */
    public AjaxResult getProjectById(Long id);

    /**
     * 修改项目
     * */
    public AjaxResult updateProject(Project project);

    /**
     * 根据项目id 关闭项目
     * */
    public AjaxResult closeProjectById(Long id);

    /**
     * 根据项目id 取消项目
     * */
    public AjaxResult cancelProjectById(Long id);

    /**
     * 批量插入项目以及bugList
     * @param list
     * @return
     */
    public AjaxResult batchAddProjectBugList(List<Map<Project,List<Bugs>>> list);

    /**
     * 打开关闭的项目数据
     * */
    public AjaxResult openProject(Long id);

    /**
     * 获取项目品牌与机型类别
     * */
    public AjaxResult queryProjectBrand();

    /**
     * 获取项目客户类别
     * */
    public AjaxResult queryProjectCustom();

    /**
     * 查询项目下的bug问题类别数量汇总
     * */
    public AjaxResult getBugProblemTypeCount(Project project);

    /**
     * 查找项目专案数量
     * */
    public AjaxResult findSpecialCaseCount();

    /**
     * 板卡异常Top5
     * */
    public AjaxResult findAdBoardTop5Date();

    /**
     * OC异常Top5
     * */
    public AjaxResult findLcmOcTop5Date();

    /**
     * 电源异常Top5
     * */
    public AjaxResult findPowerSupplyTop5Date();

    /**
     * 查询项目专案测试数据统计
     * */
    public AjaxResult getProjectLevelTestDate(Project project);

    /**
     * 查询项目成熟度
     * */
    public AjaxResult findProjectMaturity(Project project);

    /**
     * 判断项目是否是close状态
     * @param id
     * @return
     */
    public AjaxResult checkProjectIfClose(Long id);
}
